package com.xqx.handler;

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;

import javax.xml.crypto.Data;
import java.sql.*;
import java.util.Date;

/**
 * @author：xingquanxiang createTime：2019/10/6 11:02
 * description: java中日期类型转换为数据库中bigint类型
 */
public class DateTypeHandler extends BaseTypeHandler<Date> {
    /**
     * 将java类型 转换成 数据库需要的类型
     * save delete update
     * @param preparedStatement
     * @param i
     * @param date
     * @param jdbcType
     * @throws SQLException
     */
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType jdbcType) throws SQLException {
        long time = date.getTime();
        preparedStatement.setLong(i,time);
    }

    /**
     * 将数据库中的类型 转换成java类型
     * @param resultSet    查询出的结果集
     * @param s   要转换的字段名称
     * @return
     * @throws SQLException
     */
    @Override
    public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {
        // 获取对应数据库字段
        long time = resultSet.getLong(s);
        Date date = new Date(time);
        return date;
    }
    //将数据库中类型转换成java类型
    @Override
    public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {
        long time = resultSet.getLong(i);
        Date date = new Date(time);
        return date;
    }
    //将数据库中类型转换成java类型
    @Override
    public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        long time = callableStatement.getLong(i);
        Date date = new Date(time);
        return date;
    }
}
